package top.guoziyang.mydb.transport;

public class Packager {
    private Transporter transpoter;
    private Encoder encoder;

    public Packager(Transporter transpoter, Encoder encoder) {
        this.transpoter = transpoter;
        this.encoder = encoder;
    }

    /**
     * 数据包发送
     */
    public void send(Package pkg) throws Exception {
        byte[] data = encoder.encode(pkg); // 使用 Encoder 编码数据包为字节数组
        transpoter.send(data); // 通过 Transporter 发送字节数组
    }

    /**
     * 数据包接收
     */
    public Package receive() throws Exception {
        byte[] data = transpoter.receive(); // 使用 Transporter 接收字节数组
        return encoder.decode(data); // 使用 Encoder 解码字节数组为 Package
    }

    /**
     * 关闭连接
     */
    public void close() throws Exception {
        transpoter.close();
    }
}
